#!/bin/bash

echo "=== 植物疾病棅测系统 - 开发环境启动脚本 ==="

# 设置错误处理
set -e

# 显示当前数据库配置
echo "当前数据库配置："
echo "DB_HOST: $DB_HOST"
echo "DB_PORT: $DB_PORT"
echo "MYSQL_USER: $MYSQL_USER"
echo "MYSQL_DATABASE: $MYSQL_DATABASE"
echo ""

# 等待数据库服务启动
echo "等待数据库服务启动..."
for i in {1..20}; do
    if nc -z "$DB_HOST" "$DB_PORT" 2>/dev/null; then
        echo "数据库端口可达，尝试MySQL连接..."
        if mysqladmin ping -h"$DB_HOST" -P"$DB_PORT" -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" --skip-ssl --silent 2>/dev/null; then
            echo "✓ 数据库连接成功!"
            break
        else
            echo "MySQL服务未就绪，继续等待... (尝试 $i/20)"
        fi
    else
        echo "正在等待数据库端口开放... ($i/20)"
    fi
    sleep 2
done

# 验证数据库连接
if ! mysqladmin ping -h"$DB_HOST" -P"$DB_PORT" -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" --skip-ssl --silent 2>/dev/null; then
    echo "❌ 数据库连接失败"
    exit 1
fi

# 等待Redis服务启动
echo "等待Redis服务启动..."
for i in {1..15}; do
    if redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" ping > /dev/null 2>&1; then
        echo "✓ Redis连接成功!"
        break
    fi
    echo "正在等待Redis连接... ($i/15)"
    sleep 1
done

# 验证Redis连接
if ! redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" ping > /dev/null 2>&1; then
    echo "❌ Redis连接失败"
    exit 1
fi

# 安装开发依赖（如果需要）
if [ -f "requirements-dev.txt" ]; then
    echo "安装开发依赖..."
 #   pip install -r requirements-dev.txt
fi

# 运行数据库迁移
echo "运行数据库迁移..."
python manage.py makemigrations
python manage.py migrate

# 收集静态文件
echo "收集静态文件..."
python manage.py collectstatic --noinput --clear

# 初始化机构和实验室数据
echo "初始化机构和实验室数据..."
python manage.py init_institutions

echo "创建测试用户..."
python manage.py create_test_users

# 创建超级用户（如果不存在）
echo "检查超级用户..."
python manage.py shell -c "
from django.contrib.auth import get_user_model
User = get_user_model()
if not User.objects.filter(is_superuser=True).exists():
    User.objects.create_superuser('admin', 'admin@system.com', 'admin123456')
    print('创建超级用户: admin/admin123456')
else:
    print('超级用户已存在')
"

echo "=== 开发环境初始化完成 ==="
echo "🔗 后端API地址: http://localhost:8000"
echo "🔗 Django管理: http://localhost:8000/admin/"
echo "👤 测试邮箱: member@test.com / 123456"
echo "👤 管理员邮箱: admin@system.com / admin123456"
echo ""

# 启动Django开发服务器
echo "启动Django开发服务器..."
exec python manage.py runserver 0.0.0.0:8000 --settings=plant_disease.settings